Computing technology relies on ready access to data and instructions. The data and instructions may be present in volatile memory, or in non-volatile storage. Volatile memory tends to have faster access times, but is typically more expensive per byte, and does not survive a power cycle. Non-volatile memory tends to have slower access times, but is less expensive per byte, and does survive power cycles. Most sophisticated computing systems include both volatile memory and non-volatile storage so as to accentuate the advantages of each.
Even within the category of non-volatile storage, there is a storage hierarchy present in every computing system that has storage. The storage hierarchy has multiple levels of availability. In a very simple storage hierarchy, there are only two levels of availability; specifically, either the data is present in the only form of storage that the system has (representing the higher level of availability), or the data is not in the storage at all (representing the lowest level of availability possible). Other computing systems have more than two levels of availability in their storage hierarchy. For instance, an example of a four level storage hierarchy could have an internal high performance SCSI disk drive with 10,000 rotations per minute (rpm) and with RAID as the highest level of availability, a lower performance internal disk drive with only 5400 rpm access speed as the next highest level of availability, a tape drive as the next level of availability, and unavailable storage (or no storage) being the lowest possible level of availability.
Typically, the higher the availability level of the storage, the more expensive the storage per unit byte. In backup environments, in which backups can occupy significant amounts of storage, there can be more backup data to store than there is storage available in the highest level of storage. In that case, care is often taken so that the more useful data is included in the highest level of storage, while the less useful data is relegated to a lower level of storage, or even is perhaps deleted, as appropriate, given the utility of the data.
Given the large amounts of backup data to be stored, it is often difficult for a user to determine what backups should be placed where in the storage hierarchy. A number of conventional mechanisms have been developed to perform automated storage hierarchy management; which are often applied to the backup data management problem. For instance, some storage management systems demote backup data from a higher level of availability to a lower level of availability depending on the age of the data. However, demotion based on the age of the data alone may not serve the user well if the data is accessed often. Other conventional storage management systems may promote or demote data within the storage hierarchy depending on previous access history. More frequently accessed data is kept or promoted to the higher levels of storage, whereas less frequently accessed data is kept or demoted to lower levels of storage, or are even perhaps deleted.
Consider, for example, a backup environment in which multiple computers regularly back up to a single backup server. The available high level storage of the backup server may be quickly exhausted. Accordingly, there may be off-lining policies imposed by the backup server that are based on age. For instance, if a backup from a computing system is more than ninety days old, perhaps the backup is demoted to a lower level of availability, or is even perhaps deleted. However, off-lining policies based exclusively on age or access history may not always off-line optimally.